import { PrismaClient } from '@prisma/client';
import type { TransactionClient } from '../types/prisma-types';

// 防止在开发模式下热重载时创建多个实例
declare global {
  // eslint-disable-next-line no-var
  var prisma: PrismaClient | undefined;
}

// 包含日志配置的新客户端实例
const createPrismaClient = () => {
  return new PrismaClient({
    log: process.env.NODE_ENV === 'development'
      ? ['query', 'error', 'warn']
      : ['error'],
  });
};

// 使用全局变量在开发模式下保持单例
const prisma = global.prisma ?? createPrismaClient();

if (process.env.NODE_ENV !== 'production') {
  global.prisma = prisma;
}

// 导出事务客户端类型
export type { TransactionClient };

// 导出 prisma 实例
export default prisma;
